package br.com.senac.pi5.dao;

import br.com.senac.pi5.bean.Aeroporto;
import br.com.senac.pi5.connection.ConexaoDB;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class AeroportoDao {

    static PreparedStatement ps;
    // a conexão com o banco de dados
    private final Connection conexao;

    public AeroportoDao() {
        this.conexao = new ConexaoDB().getConexao();
    }

    public Aeroporto buscaAeroporto(String codigo) throws SQLException {
        String sql = "SELECT CODIGO, NOME, CIDADE, ESTADO, LATITUDE, LONGITUDE FROM AEROPORTOS WHERE CODIGO = '" + codigo + "'";

        PreparedStatement preparedStatement = conexao.prepareStatement(sql);
        ResultSet rs = preparedStatement.executeQuery(sql);

        Aeroporto aeroporto = new Aeroporto();

        while (rs.next()) {
            aeroporto.setCodigo(rs.getString("CODIGO"));
            aeroporto.setNome(rs.getString("NOME"));
            aeroporto.setCidade(rs.getString("CIDADE"));
            aeroporto.setEstado(rs.getString("ESTADO"));
            aeroporto.setLatitude(Double.parseDouble(rs.getString("LATITUDE")));
            aeroporto.setLongitude(Double.parseDouble(rs.getString("LONGITUDE")));
        }

        return aeroporto;
    }

    public List<Aeroporto> buscaTodosAeroportos() throws SQLException {
        String sql = "SELECT CODIGO, NOME, CIDADE, ESTADO, LATITUDE, LONGITUDE FROM AEROPORTOS";

        PreparedStatement preparedStatement = conexao.prepareStatement(sql);
        ResultSet rs = preparedStatement.executeQuery(sql);

        List<Aeroporto> listaAeroportos = new ArrayList<>();

        while (rs.next()) {
            Aeroporto aeroporto = new Aeroporto();
            aeroporto.setCodigo(rs.getString("CODIGO"));
            aeroporto.setNome(rs.getString("NOME"));
            aeroporto.setCidade(rs.getString("CIDADE"));
            aeroporto.setEstado(rs.getString("ESTADO"));
            aeroporto.setLatitude(Double.parseDouble(rs.getString("LATITUDE")));
            aeroporto.setLongitude(Double.parseDouble(rs.getString("LONGITUDE")));

            listaAeroportos.add(aeroporto);
        }
        return listaAeroportos;
    }
}
